1. Field of the Invention
This invention relates generally to the field of information communication between nodes in a network and more specifically to recovering from errors occurring during the transmission of data between nodes.
2. Description of the Prior Art
A variety of different types of network configurations have been proposed or used for transmitting data between interconnected nodes in a network. For example, Local Area Networks (LAN's) comprise a number of computer based pieces of equipment which are normally distributed within a single establishment. A LAN is most commonly arranged into one of three basic topologies, namely star, bus and ring. More complex network configurations are possible by interconnecting a number of different LAN's by means of switches in the form of bridges or routers.
These networks include some type of error recovery method. This includes a means of detecting an error and a means of correcting the error. The means of detecting the error can typically include a parity check on each byte or small quantity of information transferred. A parity check is the addition of usually a single bit by the transmitter to make the simple arithmetic summation of all of the bits within, for example a byte, transmitted into either an even number for even parity, or an odd number for odd parity. A parity check will usually detect one bit errors and so is mainly used over short distances with transmission paths of high integrity.
For longer distances, or for transmission paths of lower integrity, a CRC (cyclic redundancy check) can be used. A CRC typically consists of one of two bytes that are sent for each block of bytes transmitted, such as after each 128, 256 or 512 byte block. The particular CRC used is defined by the polynomial used to calculate it. A typical polynomial would be X16+X15+X2+1. The least significant one or two bytes are taken and transmitted after the data. The receiver applies the same method of calculating the polynomial to incoming data and then compares the answer it calculates with the incoming CRC. The probability of detecting even multi-bit errors, such as those associated with a long transmission path, is very high.
These error detection methods all correct errors by the receiving node requesting retransmission of the block of data containing the error. The retransmitted block is then checked in the same way as the originally transmitted block. But these methods do not allow for the transmitting node to take corrective action where the receiving node does not acknowledge receipt of data. This can result in the transmitting node continuing to send frames until the buffer in the receiving node is full. The disadvantage of this is that at this point no further communication with the receiving node to assist error recovery is possible, since data will be rejected by the receiving node until its buffer is cleared. In order to clear its buffer, the receiving node may pass on incomplete data. This has a further disadvantage that if the data being sent is a replacement for previous data, for example, an updated version of a previously stored file, then the previously stored file may be corrupted by the incomplete data.
Where multiple paths from a transmitting node to a receiving node exist, it is possible to take corrective action to clear the buffer associated with the failing path, and also to ensure that the incomplete data is discarded, rather than passed on from the receiving node. Recovery will usually be coordinated by a single `master` node having access to all receiving and transmitting nodes in the network. Access by the master node may be via other receiving or transmitting nodes. The master node is permanently defined for a given network.
One disadvantage associated with the master node scheme is that a user of the network (e.g. an application) that is inputting or outputting information to or from one of the receiving or transmitting nodes to be sent to another user, may wish to define a different node as a master. Another disadvantage is that a failure of the master node would render inoperative the error recovery co-ordination for the whole network.